package com.cskaoyan.javase._1extends._10final._3variable._0introduction;

/**
 * final修饰变量,表示最终的,最后的变量,即表示常量.
 * final修饰变量,可以修饰:
 *      1.局部变量
 *      2.成员方法
 *      3.静态成员变量
 *
 * 在具体看final修饰变量之前,我们先明确三个原则:
 *      1.常量的分类:
 *          a.字面值常量,比如123,"hello",true等直接写在代码中的字面值
 *          b.自定义常量,指的就是final修饰的变量
 *          无论是什么常量,都是常量,它们取值都不可以改变
 *          自定义常量的特殊命名:
 *              为了体现自定义常量的特殊性,它的命名有特殊的规范
 *              尤其是final修饰静态成员变量,推荐采用下面的命名规范:
 *                  单词字母全部大小,然后单词之间用"_"隔开
 *                  比如"MAV_VALUE" 当然这并不强制
 *
 *     2.(重点)final修饰变量,仅表示常量,取值不变.该变量的使用方式,在内存中的位置
 *          生命周期等特点都不会随之改变.
 *
 *
 *     3.(重点)final修饰变量,从数据类型来说,只有两种:
 *          a.基本数据类型,被final修饰表示取值不变
 *          b.引用数据类型,被final修饰,实际上是修饰引用,表示引用不可变
 *              引用成为一个常量 --> 引用中存储的地址不可变了
 *              --> 引用不能再指向其它对象了
 *              但是引用不可变,不意味着对象不可变
 *              对象中元素的取值,仍然可以被改变
 *
 * @since 09:43
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        final int a = 10;
    }
}
